Non-volatile data storage devices, such as universal serial bus (USB) flash memory devices or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, Multi-Level Cell (MLC) NAND flash memory devices provide increased storage density by storing 3 bits per cell, 4 bits per cell, or more. Although increasing the number of bits per cell and reducing device feature dimensions may increase a storage density of a memory device, a bit error rate of data stored at the memory device may also increase.
Error correction coding (ECC) is often used to correct errors that occur in data read from a memory device. Prior to storage, data may be encoded by an ECC encoder to generate redundant information (e.g. “parity bits”) that may be stored with the data as an ECC codeword. As more parity bits are used, an error correction capacity of the ECC increases and a number of bits required to store the encoded data also increases.
The effect of cross-coupling (also known as “Yupin Effect”) is well known in NAND memories. The effect causes an effective upward shift of the threshold voltage of a target cell according to the voltage level programmed in an adjacent cell. Because of the closed-loop algorithm used for programming a target cell (successive program-and-verify steps), the size of the voltage shift occurring in the neighbor cell after the target cell had already been brought to its desired threshold voltage is more relevant for the purpose of determining the cross-coupling effect than the absolute voltage to which the interfering neighbor cell is set. The cross coupling effect for a given target cell is determined by adjacent memory cells that are programmed later than the target cell and is not determined by cells that are programmed earlier than the target cell. Historically, the most influential neighbor cell for a given target cell is the cell located on the same bit line on the target cell and on the next word line. This cell is herein referred to as “upper cell”. Additional cells that produce coupling effects are the two cells located diagonally to the target cell on the next word line and the two cells located on the same word line as the target cell immediately to the right and left of the target cell. Other more distant cells may also produce coupling effects, though to a lesser extent. The specific magnitude of the coupling effect produced by each cell depends on the programming plan used when filling a block of cells with data (i.e., the sequence of programming steps to bring all cells to their target states).
In a cell voltage distribution (CVD) of the threshold voltages of the cells sharing a common word line, the cross-coupling effect translates into both shifting and widening of the lobes of the CVD representing the various states the cells are being programmed to. The widening is caused by some of the cells being shifted strongly because of a strong coupling effect (e.g., by their upper neighbor) while other cells are not shifted at all or only slightly shifted (e.g., because their upper neighbor is left in its erased state or is shifted only a small amount).
The shifting and widening of the Cell Voltage Distribution (CVD) lobes introduce errors into the reading of the data stored in a word line. To combat the errors introduced by shifting of the CVD lobes it is common to employ some form of dynamic reading. Dynamic reading can include changing the location of reading points along the voltage axis so that the reading reference points differentiate between adjacent lobes even after the lobes have been shifted. A dynamic reading technique known as “CVD tracking” includes taking a sequence of binary readings along the voltage axis and counting, for each reading point, the number of cells on the word line having a threshold voltage on each side of the reading point. By “differentiating” the resulting data (by calculating the difference between the number of cells that are “ON” in each interval and the number that are “ON” in the previous interval) a histogram may be generated that shows the number of cells in the word line having a threshold voltage within each of the voltage intervals between successive reading points. The histogram can be used to estimate the minimum points separating adjacent lobes and to set the dynamic reading points to those minimum points, thus enhancing separation between the lobes and reducing errors due to the shifting effect. However, bit errors may still occur when reading data from the word line using the estimated minimum points.
Improving selection of read voltages in a data storage device to achieve a greater reduction in bit errors may extend a useful life of the data storage device and/or may enable a comparable useful life to be achieved while operating using a lower-complexity error correction coding (ECC) decoder. Using a lower-complexity ECC decoder enables enhanced performance, reduced cost, and/or reduced power consumption as compared to using a higher-complexity ECC decoder.